<?php
/****************************************************************
** Application : Nova
**
** Les buts de cet application sont de fournir un outils de partage
** de l'information pour le site membre "nova"
**
** Les auteurs :
** 		Design Web 			: Serge Peter
** 		Developpement PHP 	: Serge Peter
** 		Etudes 				: Sandrine Guihenneuc
**		Feuille de style	: Sandrine Guihenneuc
** Fichier CalAdmin.php :
** 		Ce fichier contient les informations de connexion sur la base de
**      mysql
**
*****************************************************************/

/*
** Function : login_form
**
** Deal : log the user into the application
**
** Params : database connection, based form name.
*/
function login_form($pdb, $pindex_form)
{

	/*
	** Definition du formulaire
	*/
	$form = new HTML_QuickForm('frmLogin', 'post', $pindex_form . "?action=1000");
	$form->addElement('text', 'username', 'Votre pseudo : ', array('value' => $_SESSION['username'],'size' => 10, 'maxlength' => 10));
	$form->addElement('password', 'password', 'Mot de passe : ', array('value' => $_SESSION['password'],'size' => 10, 'maxlength' => 10));
	$form->addRule('username', 'Vous devez saisir un pseudo (defaut : visiteur)', 'required', '', 'client');
	$form->addRule('password', 'Vous devez saisir un mot de passe (defaut : NA)', 'required', '', 'client');
	$form->applyFilter('Nom','trim') ;
	$form->applyFilter('Pseudo','trim') ;
	$form->setRequiredNote('<span style="color: #ff0000">*</span> = champs obligatoires');
	$form->setJsWarnings('Erreur de saisie','Veuillez corriger');
	$form->addElement('submit', 'bouton_effacer', 'Envoyer');

	if ($form->validate()) {  //form

	    /* setting des variable de session */
	    $_SESSION['username'] =$form->exportValue('username') ;
	    $_SESSION['password'] =md5($form->exportValue('password')) ;

	    // to code : $_SESSION['utilisateur_type_cd'] =$form->exportValue('utilisateur_type_cd') ;
	    $_SESSION['mode'] = 1;

	    /* now we will check in the db if the user is OK */
	    $sql = 'SELECT u.id, ut.nom, ut.id, ut.ponderation
	            FROM ' . TB . 'utilisateurs u, ' . TB . 'utilisateur_types ut
	            WHERE u.utilisateur_type_id = ut.id
	            AND u.username = "' . $_SESSION['username'] . '"
	            AND u.password = "' . $_SESSION['password'] . '"';

	   $res = $pdb->query($sql);

       if ( DB::isError( $res = $pdb->query( $sql ) ) ) {
	        echo MSG_DB_ERR,DB::errorMessage($res), '<br/>';
	    }
	    else
	    {
	    if ($res->numRows() == 1){

	    if (is_array($row = $pdb->getRow($sql))) {
	        /* assignation dans variables session */
	        list($_SESSION['user_id'],
                $_SESSION['utilisateur_type_cd'],
                $_SESSION['utilisateur_type_id'],
                $_SESSION['ponderation']) = $row;
	        }

	        /* liberer le resultat db */
	        $res->free();
	        deb_echo("DEBUG :" . INDEX_FORM);
			$url_back=$pindex_form;
			go_back($url_back, MSG_WELCOME, 3);

	    }else{
			form_display($form, "Formulaire de login", "forms", "50%");
			print_login_err(MSG_LOGIN_ERR);
			}
	    } // db results
    }else{    //form
			form_display($form, "Formulaire de login", "forms", "50%");
    } //form
}

function treate_users($db,  $service_id)
{

	/* check des droits */
	if ($_SESSION['ponderation'] >=10) {

/* lecture des variable */
	if (isset($_GET["adm_id"]))
		$id = $_GET['adm_id'];
	else
		$id=0;
	
	if (isset($_GET["adm_action"]))
		$action = $_GET['adm_action'];
	else
		$action=0;

	/* variable "globale" */
	$table_name = TB . 'utilisateurs';
	$titre = "Utilisateurs";
	$shortname="users";

	/* application du mode par defaut.
		 Le mode "action" est passe en parametre de l'url ...?action=SELECTION par example */
	if (empty ($action))
		$action = 0;

	/* travail en fonction des actions */
	switch($action)
	{
		case 0;   // Mode selection

			/* on lance la query */
			$sql = "SELECT * FROM " . TB . "utilisateurs order by nom, prenom";
			$result = $db->query($sql);
			
			deb_echo ("sql => $sql");

			/* on initialise la table */
			$colHeaders = array("id", "Nom", "Prenom", "Pseudo", "Email", "Actions");
			$table = new HTML_Table("border=0 cellpadding=1 cellspacing=2 ");
			$table->addRow($colHeaders, "", "TH");

			/* on remplit la table */
			while ($row = $result->fetchrow(DB_FETCHMODE_ASSOC)) {
				$table->addRow(array($row["id"],
				$row["nom"],
				$row["prenom"],
				$row["username"],
				"<a href=\"mailto:" . $row["email"] . "\">". $row["email"] ."</a></body>",
				"<a href=\"" . INDEX_FORM . "?adm_action=2&adm_id=" . $row["id"] . "&id=" . $service_id . "&sub_id=". $shortname ."\">" . IMG_1 ."</a>"
				. "<a href=\"" . INDEX_FORM . "?adm_action=3&adm_id=" . $row["id"] . "&id=" . $service_id . "&sub_id=". $shortname ."\">" . IMG_2 ."</a>"));
			}

			table_display($table, $titre, "admin");
			$url_new=INDEX_FORM . "?adm_action=1&adm_id=NA&id=" . $service_id . "&sub_id=" . $shortname . "&cur_page=". $cur_page . "&filter=" . $filter;
			$url_new_label=MSG_CONT_3;
			print_url($url_new, $url_new_label);
			break;

	case 3;   // Mode effacer
		$url_back = INDEX_FORM . "?id=" . $service_id . "&sub_id=" . $shortname;
		del_record_and_go_back($db,  $service_id, $table_name, $id, $url_back);
	    break;

	case 1 or 2;  // mode ajouter ou editer

			/* definir la query */
			$sql = 'select * from ' . $table_name . '
			where id = "' . $id . '"';

			/* lancer la query */
			$res = $db->query($sql);

			// check des erreurs DB
			if ( DB::isError( $res = $db->query( $sql ) ) ) {
				echo 'Erreur de base de donnees : ',DB::errorMessage($res), '<br/>';
			}else{

				/* pas d'erreur base de donnees */
				/* assignation dans variables session */
				if (is_array($row = $db->getRow($sql))) {
					list($id,
					$nom,
					$prenom,
					$utilisateur_type_id,
					$adresse,
					$NP,
					$ville,
					$canton,
					$pays,
					$username,
					$password,
					$inscription_status_id,
					$inscription_date,
					$email) = $row;
				}
				/* dans tous les cas on met le mot de passe a null */
				$password=null;

				/* il s'agit d'un nouveau utilisateur , on essigne les valeurs par defaut */
				if ($id == "NA"){
					$id = null ;
					$nom = "votre nom" ;
					$prenom = "votre prenom" ;
					$utilisateur_type_id = "6" ;
					$adresse = null ;
					$NP = null ;
					$ville = null ;
					$canton = null ;
					$pays = null ;
					$username = null ;
					$password = null ;
					$inscription_status_id = 1;

					$inscription_date = "";
					$email = "";
				}

				/*
				** Creation du formulaire (HTML_QuickForm)
				*/
				$form = new HTML_QuickForm('frm' . $table_name, 'post',  INDEX_FORM . '?adm_action=' . $action . '&adm_id=' . $id . '&id=' . $service_id . '&sub_id=' . $shortname);
				$form->addElement('text', 'id', 'Id', array('value' => $id));

				$form->addElement('text', 'nom', 'Nom', array('value' => $nom, 'size' => 40, 'maxlength' => 50));
				$form->addElement('text', 'prenom', 'Prenom', array('value' => $prenom, 'size' => 40, 'maxlength' => 60));

				$res1 = $db->getAssoc('select id, nom from ' . TB . 'utilisateur_types order by nom');
				$form->addElement('select', 'utilisateur_type_id', 'Type', $res1, 'id=id');
				$form->setDefaults(array('utilisateur_type_id' => $utilisateur_type_id));


				$form->addElement('textarea', 'adresse', 'Adresse', array("class"=>"warn",
																		   "rows"=>"3",
																		   "cols"=>"50",
																		   "maxlength"=>"100",
																		   "id" => "adresse"));
				$form->setDefaults(array('adresse' => $adresse));

				$form->addElement('text', 'NP', 'NP', array('value' => $NP, 'size' => 5, 'maxlength' => 5));
				$form->addElement('text', 'ville', 'Ville', array('value' => $ville, 'size' => 40, 'maxlength' => 50));
				$form->addElement('text', 'canton', 'Canton / Region', array('value' => $canton, 'size' => 40, 'maxlength' => 50));
				$form->addElement('text', 'pays', 'Pays', array('value' => $pays, 'size' => 40, 'maxlength' => 50));
				$form->addElement('text', 'username', 'Pseudo', array('value' => $username, 'size' => 40, 'maxlength' => 50));
				$form->addElement('password', 'password', 'Mot de passe', array('value' => $password, 'size' => 40, 'maxlength' => 50));

				$res2 = $db->getAssoc('select id, code from ' . TB . 'inscription_status order by code');
				$form->addElement('select', 'inscription_status_id', 'Inscription status', $res2, 'id=id');
				$form->setDefaults(array('inscription_status_id' => $inscription_status_id));

				 $options = array(
					'language'  => 'fr',
					'format'    => 'dMY',
					'minYear'   => 2004,
					'maxYear'   => 2007

					);
				$form->addElement('date', 'inscription_date', 'Date d\'inscription', $options);
				$form->setDefaults(array('inscription_date' => $inscription_date));

				$form->addElement('text', 'email', 'Email', array('value' => $email, 'size' => 60, 'maxlength' => 100));

				$form->addRule('nom', 'Vous devez saisir nom', 'required', '', 'client');
				$form->addRule('prenom', 'Vous devez saisir un prenom', 'required', '', 'client');
				$form->addRule('utilisateur_type_id', 'Vous devez saisir un type', 'required', '', 'client');
				$form->addRule('username', 'Vous devez saisir un pseudo', 'required', '', 'client');

				$form->addRule('password', 'Vous devez saisir un Mot de passe', 'required', '', 'client');
				$form->addRule('email', 'Ce champ doit etre un email valide', 'email', '', 'email');
	        	$form->addRule('email', 'Vous devez saisir votre adresse Email', 'required', '', 'client');

				$form->applyFilter('username','trim') ;
				$form->applyFilter('password','trim') ;

				$form->setRequiredNote('<span style="color: #ff0000">*</span> = champs obligatoires');
				$form->setJsWarnings('Erreur de saisie','Veuillez corriger');

				$form->addElement('submit', 'bouton_effacer', 'Envoyer');

				/* c'est quand l'utlisateur presse le bouton .... */
				if ($form->validate()) {  //form

					/* dates */
					$insc_ar = $form->exportValue('inscription_date');
					$insc_str = $insc_ar["Y"] . "-" . $insc_ar["M"] . "-" . $insc_ar["d"] . " " . $insc_ar["h"] . ":" . $insc_ar["m"];

					/* on recupere les valeurs du formulaire */
					$fields_values = array(
						'id' => $form->exportValue('id'),
						'nom' => $form->exportValue('nom'),
						'prenom' => $form->exportValue('prenom'),
						'utilisateur_type_id' => $form->exportValue('utilisateur_type_id'),
						'adresse'  => $form->exportValue('adresse'),
						'NP' => $form->exportValue('NP'),
						'ville'  => $form->exportValue('ville'),
						'canton'  => $form->exportValue('canton'),
						'pays'  => $form->exportValue('pays'),
						'username' => $form->exportValue('username'),
						'password' => md5($form->exportValue('password')),
						'inscription_status_id'  => $form->exportValue('inscription_status_id'),
						'inscription_date' => $insc_str,
						'email'  => $form->exportValue('email'));

					/* test pour savoir si on fait un update ou un insert */
					if ($action == 1 ){
						$resins = $db->autoExecute($table_name, $fields_values, DB_AUTOQUERY_INSERT);
					}else{
						$resins = $db->autoExecute($table_name, $fields_values, DB_AUTOQUERY_UPDATE, "id = $id");
					}

					/* check des erreurs */
					if (DB::isError($resins)) {
						/* utilisation d'une fonction de print de message d'erreur */
						print_insupd_err(MSG_INSUPG_ERR, $resins->getMessage());

						/* utilisation d'une fonction specifique au display (CSS) */
						form_display($form, "Edition d'un utilisateur", "forms", "50%");

					}else{
						$url_back=INDEX_FORM . "?id=" . $service_id . "&sub_id=" . $shortname ;
						go_back($url_back, MSG_INSUPD_RECORD, 3);
					}
				}else{

					form_display($form, "Edition d'un utilisateur", "forms", "50%");
					?>
					<p>
					<a href=" <?php echo INDEX_FORM . "?id=" . $service_id . "&sub_id=" . $shortname;  ?> ">Retour aux <?php echo $titre; ?></a>
					</p>
					<?php } //form
					
			} //erreur base de donnees
			break;

		} //switch
	} //if check des droits
	else
	{
		print_err_right_on_page(INDEX_FORM);
	}
}

?>